package main

import "fmt"

//8, 3, 2, 9, 4, 6, 10, 0
//插入排序类似于摸牌、理牌
//每摸一张拿它和前面的摸的牌相比较
func insert_sort(a [8]int) [8]int {
  //摸一张新牌
  for i := 1; i < len(a); i++ {
    //将摸到的牌和前面的牌做比较
    for j := i; j > 0; j-- {
      if a[j] < a[j-1] { //如果比前面的那张小,就和前面的那张交换顺序
        a[j], a[j-1] = a[j-1], a[j] //emmm 这大概就是go里 允许一行同时多个赋值 这样写法的原因了
      }else {
        break
      }
    }
  }
  return a
}

func main() {
  var i [8]int = [8]int{8, 3, 2, 9, 4, 6, 10, 0}
  res := insert_sort(i)
  fmt.Println(res) //[0 2 3 4 6 8 9 10]
}
